home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 1 / LIGHT-ROM 1 (Amiga Library Services)(1994).iso / ffdisks / d977.lha / UChess / UChessSrc.lha / movemem.asm < prev    next >
Assembly Source File  |  1993-10-28  |  2KB  |  147 lines

  1.     CSECT   text
  2. ;        XDEF    @MoveMem
  3.         XDEF    @MoveMem128
  4.         XDEF    @ClearMem
  5. ; D0 has # bytes to move
  6. ; A0 has source addre
  7. ; a1 has dest addr
  8.  
  9. @MoveMem128 equ    *
  10.     move.l    (a0)+,(a1)+
  11.     move.l    (a0)+,(a1)+
  12.     move.l    (a0)+,(a1)+
  13.     move.l    (a0)+,(a1)+
  14.     move.l    (a0)+,(a1)+
  15.     move.l    (a0)+,(a1)+
  16.     move.l    (a0)+,(a1)+
  17.     move.l    (a0)+,(a1)+
  18.     move.l    (a0)+,(a1)+
  19.     move.l    (a0)+,(a1)+
  20.     move.l    (a0)+,(a1)+
  21.     move.l    (a0)+,(a1)+
  22.     move.l    (a0)+,(a1)+
  23.     move.l    (a0)+,(a1)+
  24.     move.l    (a0)+,(a1)+
  25.     move.l    (a0)+,(a1)+
  26.     move.l    (a0)+,(a1)+
  27.     move.l    (a0)+,(a1)+
  28.     move.l    (a0)+,(a1)+
  29.     move.l    (a0)+,(a1)+
  30.     move.l    (a0)+,(a1)+
  31.     move.l    (a0)+,(a1)+
  32.     move.l    (a0)+,(a1)+
  33.     move.l    (a0)+,(a1)+
  34.     move.l    (a0)+,(a1)+
  35.     move.l    (a0)+,(a1)+
  36.     move.l    (a0)+,(a1)+
  37.     move.l    (a0)+,(a1)+
  38.     move.l    (a0)+,(a1)+
  39.     move.l    (a0)+,(a1)+
  40.     move.l    (a0)+,(a1)+
  41.     move.l    (a0)+,(a1)+
  42.     rts
  43.     IFD    REGMOVE
  44. @MoveMem equ    *
  45.     move.l    D0,D1
  46.     andi.l    #$1,D1
  47.     beq.s    OKTOGO
  48.     move.b    (a0)+,(a1)+
  49. OKTOGO: andi.l    #2,d1
  50.     beq.s    OKTOG2
  51.     move.w    (a0)+,(a1)+
  52. OKTOG2: lsr.l    #2,D0 ; now d0 has # of longwords to move
  53.     move.l    d0,d1
  54.     beq.s    retn2
  55.     and    #1,d1
  56.     beq.s    nor6
  57.     move.l    (a0)+,(a1)+
  58. nor6:
  59.     move.l    D0,d1
  60.     and    #2,d1
  61.     beq.s    nor7
  62.     move.l    (a0)+,(a1)+
  63.     move.l    (a0)+,(a1)+
  64. nor7:
  65.     lsr.l    #2,d0
  66.     beq.s    retn2
  67.     subq.l    #1,d0
  68. m69:
  69.     move.l    (a0)+,(a1)+
  70.     move.l    (a0)+,(a1)+
  71.     move.l    (a0)+,(a1)+
  72.     move.l    (a0)+,(a1)+
  73.     dbra    d0,m69
  74. retn2:    rts
  75.     ENDC
  76. @ClearMem equ * ; a0 has address start d0 has the len in bytes
  77.     move.l    d2,-(sp)
  78.     clr.l    d2
  79.     move.l    a0,d1
  80.     bne.s    proceed33
  81. retno3:    move.l    (sp)+,d2
  82.     rts
  83. proceed33:
  84.     move.l    D0,D1
  85.     andi.l    #$1,D1
  86.     beq.s    OKTOGO3
  87.     clr.b    (a0)+
  88. OKTOGO3: andi.l    #2,d1
  89.     beq.s    OKTOG23
  90.     clr.w    (a0)+
  91. OKTOG23: lsr.l    #2,D0 ; now d0 has # of longwords to move
  92.     beq.s    retno3
  93.     move.l    a0,d1
  94.     andi.l    #$1,d1
  95.     beq.s    fineaddr1
  96.     clr.b    (a0)+
  97.     moveq.l    #3,d2
  98. fineaddr1:
  99.     move.l    a0,d1
  100.     andi.l    #2,d1
  101.     beq.s    fineaddr2
  102.     clr.w    (a0)+
  103.     tst.l    d2
  104.     beq.s    mov2
  105.     moveq.l    #1,d2
  106.     bra.s    fineaddr2
  107. mov2:
  108.     moveq.l    #2,d2
  109. fineaddr2:
  110.     tst.l    d2
  111.     beq.s    one1
  112.     subq.l    #1,d0  ; one less lw to move
  113. one1:
  114.     move.l    d0,d1
  115.     beq.s    xty
  116.     and.l    #1,d1
  117.     beq.s    nor63
  118.     clr.l    (a0)+
  119. nor63:
  120.     move.l    D0,d1
  121.     and.l    #2,d1
  122.     beq.s    nor73
  123.     clr.l    (a0)+
  124.     clr.l    (a0)+
  125. nor73:
  126.     lsr.l    #2,d0
  127.     beq.s    xty
  128. ;    subq.l    #1,d0
  129. m693:
  130.     clr.l    (a0)+
  131.     clr.l    (a0)+
  132.     clr.l    (a0)+
  133.     clr.l    (a0)+
  134.     subq.l    #1,d0
  135.     bne.s    m693
  136. ;    dbra    d0,m693
  137. xty:    tst.l    d2
  138.     beq.s    retokj
  139.     subq.l    #1,d2
  140. xtx:
  141.     clr.b    (a0)+
  142.     dbra    d2,xtx
  143. retokj:
  144.     move.l    (sp)+,d2
  145.     rts
  146.     end
  147.